import axios from 'axios'
import { ElLoading, ElMessage } from 'element-plus'
import nProgress from 'nprogress'
import { useTokenStore } from '@/stores/modules/authorization'
const tokenStore = useTokenStore()
//axios二次封装
const instance = axios.create({
    baseURL: '/prod-api',
    timeout: 15000,
    headers: {
        'Content-Type': 'application/json;charset=utf-8',
        Authorization: `${tokenStore.getToken()}`
    }
})
const loaderOpen = () => {
    return ElLoading.service({
        background: 'rgba(0, 0, 0, 0.7)',
        text: '集结号'
    })
}
// // // 添加请求拦截器
instance.interceptors.request.use(
    (config) => {
        // 在发送请求之前做些什么
        nProgress.start()
        loaderOpen()
        return config
    },
    (error) => {
        // 对请求错误做些什么

        ElMessage({
            message: '系统错误请稍后重试...',
            type: 'error'
        })
        return Promise.reject(error)
    }
)

// 添加响应拦截器
instance.interceptors.response.use(
    function (res) {
        // 2xx 范围内的状态码都会触发该函数。
        // 对响应数据做点什么
        loaderOpen().close()
        nProgress.done()
        // console.log(res)
        if (res.data.code === 200) {
            // 成功
            res.data.msg === null ? null : ElMessage.success(res.data.msg)
            return res.data // 返回里面的数据，在使用这个axios时，获取到的东西就是这里返回的东西
        } else {
            ElMessage({ message: res.data.msg, type: 'error' })
            return res.data
        }
    },
    function (error) {
        // 超出 2xx 范围的状态码都会触发该函数。
        // console.log('有误')
        // 对响应错误做点什么
        loaderOpen().close()
        nProgress.done()
        return Promise.reject(error)
    }
)

export default instance
